//Requires jQuery to work!
var sf_admin_tabifier_tabs_visible;
var sf_admin_tabifier_toggle_visible_text;
var sf_admin_tabifier_toggle_hidden_text;

function sf_propel_revisited_generator_tabify(index, value)
{
  var h2 = jQuery(value).children('h2');
  var title = h2.html() ? h2.html() : '...';
  var has_errors = (jQuery('#' + value.id + ' .errors').size() > 0);

  var tab = jQuery('<a class="sf_admin_tab' + (has_errors ? ' sf_admin_tab_with_errors' : '') + '" href="#">' + title + '</a>');
  tab.click(function() { sf_propel_revisited_generator_tabifier_select_tab(this, value); });

  jQuery('#sf_admin_tab_holder').append(tab);
  jQuery(value).hide();
}

function sf_propel_revisited_generator_tabifier_select_tab(tab, fieldset)
{
  jQuery('.sf_fieldset').hide();
  jQuery('.sf_admin_tab').removeClass('sf_admin_tab_selected');
  jQuery(fieldset).show();
  jQuery(tab).addClass('sf_admin_tab_selected');
}

function sf_admin_propel_revisited_generator_tabifier_toggle_tabs()
{
  if (sf_admin_tabifier_tabs_visible)
  {
    jQuery('#sf_admin_edit_form .sf_fieldset').hide();
    jQuery('.sf_admin_tab_selected').click();
    jQuery('#sf_admin_tabs_toggle').html(sf_admin_tabifier_toggle_hidden_text);
  }
  else
  {
    jQuery('#sf_admin_edit_form .sf_fieldset').show();
    jQuery('#sf_admin_tabs_toggle').html(sf_admin_tabifier_toggle_visible_text);
  }
  jQuery('.sf_admin_tab').toggle();
  sf_admin_tabifier_tabs_visible = !sf_admin_tabifier_tabs_visible;
}

function sf_propel_revisited_generator_tabifier_init(toggle_visible_text, toggle_hidden_text)
{
  if (!jQuery)
  {
    return false;
  }

  sf_admin_tabifier_toggle_visible_text = toggle_visible_text;
  sf_admin_tabifier_toggle_hidden_text  = toggle_hidden_text;

  jQuery(document).ready(function() {
    var tab_holder = jQuery('<div id="sf_admin_tab_holder"></div>');
    var tabs_toggle = jQuery('<a href="#" id="sf_admin_tabs_toggle"></a>').click(sf_admin_propel_revisited_generator_tabifier_toggle_tabs);
    jQuery(tab_holder).prepend(tabs_toggle.html(toggle_hidden_text));
    jQuery('#sf_admin_edit_form').before(tab_holder);

    jQuery.each(jQuery('#sf_admin_edit_form .sf_fieldset'), sf_propel_revisited_generator_tabify);

    jQuery(tab_holder).append('<div class="sf_admin_tab_clear">&nbsp;</div>');

    // Select the first tab and display its fieldset
    sf_propel_revisited_generator_tabifier_select_tab(jQuery('.sf_admin_tab:first'), jQuery('#sf_admin_edit_form .sf_fieldset:first'));
  });
}
